package qc.common.core.enums.qms;

import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * QMS数据流程操作类型/处理类型
 *
 * @author QuCheng Tech
 * @since 2025/8/19
 */
@Getter
@AllArgsConstructor
public enum QmsDataFlowOperateTypeEnum {
    UN_DEFINE(0, "未定义"),
    /**
     * 调用原始数据接收接口，将原始数据发送至MQ
     */
    RECEIVE_RAW_DATA(10, "接收原始数据"),
    /**
     * 对原始数据进行处理，通过MQ中的原始数据消息触发的原始数据处理
     * MQ中的原始数据消息来源有2种：1.接收原始数据时发送至MQ，2.定时查询待处理后发送至MQ
     * 定时从原始数据库中查询得到待处理的原始数据记录，用于原始数据发送至MQ失败时先直接写入原始数据库再定时进行提取出来进行处理
     */
    PROCESS_RAW_DATA(11, "处理原始数据"),
    /**
     * 人工操作，对已经处理过的原始数据进行重新处理
     */
    RE_PROCESS_RAW_DATA(13, "重新处理原始数据"),
    /**
     * 根据原始数据进行点号数据计算，原始数据放入MQ可以是接收时系统自动放入，也可以是人工重新处理原始数据时系统查询到对应原始数据后放入
     */
    CALC_POINT_DATA_BY_RAW_DATA(20, "根据原始数据计算点号数据"),
    /**
     * 系统定时进行点号数据计算
     */
    CALC_POINT_DATA_BY_TIMER(21, "定时计算点号数据"),
    /**
     * 人工操作，对指定时间段内的点号数据进行重新计算
     */
    CALC_POINT_DATA_BY_MANUAL(22, "重新计算点号数据"),
    /**
     * 点号数据触发的关联点号数据计算，在作为输入点号数据进行变化（新增、修改、数据质量变化）时触发关联的点号数据计算
     */
    CALC_POINT_DATA_BY_DATA_TRIGGER(23, "点号数据触发计算"),//由于点号数据值或数据质量标记的变化导致需要计算关联的点号
    /**
     * 系统自动计算出的点号数据保存，触发系统自动计算可以是原始数据触发、定时点号数据计算触发、也可以是人工操作重新计算指定时间段内的点号数据触发
     * 强调的是点号数据值是系统自动计算来的，不是人工输入的；
     */
    SAVE_POINT_DATA_FROM_SYS_CALC(30, "系统计算点号数据保存"),//原始数据计算、定时计算、人工重新计算后的点号数据保存（侧重与由系统自动计算出的点号数据值）
    /**
     * 数据同步模块来的点号数据保存
     */
    SAVE_POINT_DATA_FROM_DATA_SYNC(31, "同步点号数据保存"),//数据同步系统保存点号数据
    /**
     * 人工录入/修改的点号数据保存
     * 强调的是数据值value来源于人工输入
     */
    SAVE_POINT_DATA_FROM_MANUAL_ENTRY(35, "人工操作点号数据保存"),//人工录入、修改
    /**
     * 人工操作，人工删除点号数据，设置点号数据质量标记为已删除
     */
    DELETE_POINT_DATA(36, "点号数据人工删除"),
    /**
     * 人工操作，人工设置点号数据为错误数据，设置点号数据质量标记为错误数据
     */
    SET_POINT_DATA_IS_ERROR(37, "点号数据人工设置为错误数据"),//人工操作设置数据质量为错误数据
    /**
     * 人工操作，人工设置点号数据为正确数据，设置点号数据质量标记为人工数据
     */
    SET_POINT_DATA_IS_RIGHT(38, "点号数据人工设置为正确数据"),//人工操作设置数据质量为人工数据，对删除、错误、测试、可疑数据设置为正确数据
    /**
     * 点号数据预警，强调的是点号数据的变化（新增、修改、数据质量变化）触发的告警
     * 一般均与点号的数据值有关，是由数值触发的告警
     */
    ALARM_BY_POINT_DATA(50, "点号数据告警"),
    /**
     * 定时预警，强调的是定时进行的检查或判断产生的告警
     * 一般是缺数告警等
     */
    ALARM_BY_TIMER(52, "定时告警"),
    /**
     * 点号数据转发，强调的是点号数据的变化（新增、修改、数据质量变化）触发的数据转发
     */
    FORWARD_BY_POINT_DATA(60, "点号数据转发"),
    /**
     * 定时转发，强调的是定时进行的转发操作
     */
    FORWARD_BY_TIMER(62, "定时转发"),
    EXTEND(99, "扩展保留");

    //插补点号数据
    //数据告警
    //数据值防误处理

    @EnumValue
    private int index;
    private String name;

    @Override
    public String toString() {
        if (this != null)
            return this.name;

        return null;
    }
}
